package com.jeasonzhao.commons.basic;

public final class StringPairCollection extends java.util.Vector<StringPair>
{
    private static final long serialVersionUID = 1L;
    public StringPairCollection()
    {
    }

    public static StringPairCollection from(StringPair ...arys)
    {
        if(null == arys)
        {
            return null;
        }
        StringPairCollection ret = new StringPairCollection();
        for(int n = 0;n < arys.length;n++)
        {
            ret.addElement(arys[n]);
        }
        return ret;
    }

    public static StringPairCollection from(String str,String strSep1,String strSep2)
    {
        if(null == str || null == strSep1 || null == strSep2 || str.length() < 1 ||
           str.length() < strSep1.length() || str.length() < strSep2.length())
        {
            return null;
        }
        java.util.List<StringPair> list = new java.util.ArrayList<StringPair>();
        String[] m = str.split(strSep1);
        for(int n = 0;null != m && n < m.length;n++)
        {
            String[] p = m[n].split(strSep2);
            list.add(new StringPair(p[0],p.length > 1 ? p[1] : p[0]));
        }
        return from(list);
    }

    public static StringPairCollection from(java.lang.Iterable<StringPair> iterAb)
    {
        if(null == iterAb)
        {
            return null;
        }
        StringPairCollection ret = new StringPairCollection();
        java.util.Iterator<StringPair> iter = iterAb.iterator();
        while(iter.hasNext())
        {
            ret.addElement(iter.next());
        }
        return ret;
    }

    public StringCollection ids()
    {
        StringCollection ret = new StringCollection();
        for(int n = 0;n < this.size();n++)
        {
            ret.add(this.get(n).getId());
        }
        return ret.size() < 1 ? null : ret;
    }

    public StringCollection names()
    {
        StringCollection ret = new StringCollection();
        for(int n = 0;n < this.size();n++)
        {
            ret.add(this.get(n).getName());
        }
        return ret.size() < 1 ? null : ret;
    }

    public String toString()
    {
        return toString("\r\n",false);
    }

    public String toString(String str,boolean appendAtFirst)
    {
        StringBuffer strRet = new StringBuffer();
        for(int n = 0;n < this.size();n++)
        {
            if(str != null && (n > 0 || appendAtFirst))
            {
                strRet.append(str);
            }
            strRet.append(this.get(n));
        }
        return strRet.toString();

    }

    public StringPair findByName(String str)
    {
        for(int n = 0;n < this.size();n++)
        {
            StringPair p = this.get(n);
            if(null != p && p.getName() != null && p.getName().equals(str))
            {
                return p;
            }
        }
        return null;
    }

    public StringPair findByIdLoose(String str)
    {
        for(int n = 0;n < this.size();n++)
        {
            StringPair p = this.get(n);
            if(null != p && p.getId() != null && p.getId().trim().equalsIgnoreCase(str))
            {
                return p;
            }
        }
        return null;
    }

    public StringPair find(String str)
    {
        for(int n = 0;n < this.size();n++)
        {
            StringPair p = this.get(n);
            if(null != p && p.getId() != null && p.getId().equals(str))
            {
                return p;
            }
        }
        return null;
    }

    public String getNameById(String str)
    {
        StringPair s = this.find(str);
        return null == s ? null : s.getName();
    }

    public void removeElementById(String str)
    {
        for(int n = 0;n < this.size();n++)
        {
            StringPair p = this.get(n);
            if(null != p && p.getId() != null && p.getId().equals(str))
            {
                this.remove(n);
            }
        }
    }

    public String[] toStringArray()
    {
        String[] ret = new String[this.size() * 2];
        for(int n = 0;n < this.size();n++)
        {
            ret[n * 2] = this.get(n).getId();
            ret[n * 2 + 1] = this.get(n).getName();
        }
        return ret;
    }

    public void add(String string,String string1)
    {
        this.add(new StringPair(string,string1));
    }
}
